package 剑指offer;

import java.util.HashMap;

public class _57_1和为s的两个数字 {
	/**
	 * 
	 *@time 2021年3月23日下午9:38:17
	 * 
	 *@param nums
	 *@param target
	 *@return int[]
	 *
	 *@see利用hashmap的属性来求出位置
	 */
    public int[] twoSum(int[] nums, int target) {
    	HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    	for (int i : nums) {
			if(map.containsKey(target-i)) return new int[] {i,target-i};
			map.put(i,0);
		}
		return null;
    }
    /**
     * 
     *@time 2021年3月23日下午9:39:06
     * 
     *@param nums
     *@param target
     *@return int[]
     *
     *@see 双指针的方法 效率略高于上面的
     */
    public int[] twoSum1(int[] nums, int target) {
		int i = 0 ,j = nums.length-1;
		while(i < j) {
			int s = nums[i]+nums[j];
			if(s < target) i++;
			else if(s > target) j--;
			else return new int[] {nums[i],nums[j]};								
		}
    	
    	return new int[0];
    	
    }
}
